package io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/**
 * java.IO将流按照读写数据的单位划分为:字节流和字符流
 * java.io.InputStream和OutputStream是所有字节流的超类
 * 比如文件流,缓冲字节流,对象流都继承自上述两个超类,读写单位最小都是以字节为单位进行的.
 *
 * java.io.Reader和Writer是所有字符流的超类,读写单位最小是以char(字符)
 * 为单位进行的
 * 字符流底层还是要进行字符与字节的转换(因为计算机底层只有2进制)
 * 但是字符流为我们提供的便利是可以让我们直接读写文本数据
 * 因此注意:字符流仅适合读写文本数据!
 *
 * 转换流
 * 转换流是一种高级流,实际开发中我们不直接使用这对流,但是在流连接中他们是非常重要
 * 的一环,负责衔接其他字符流与下面的字节流,并进行着字符与字节的转换工作.
 *
 * java.io.InputStreamReader和OutputStreamWaiter
 * 他们是唯一可以连接在字节流上的字符流,其他字符流通过连接上它就可以与底下的字节流连接使用了
 * 他们之所以称为转换流就相当于起到了"转换器"的作用.
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("osw.txt",true);
        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
        //字符流支持直接传入一个字符串作为参数将其写出
        osw.write("你好,");
        System.out.println("输出完毕!");
        osw.close();
    }
}
